/**
 * 通用轮询组合式函数
 * - 提供 start/stop 控制，默认间隔 1000ms
 * - 传入一个异步任务函数 task，出错不抛出到外部（由调用方自行 try-catch 包裹 task）
 */
export function usePolling(task: () => Promise<void>, interval = 1000) {
  const active = ref(false);
  let timer: number | null = null;

  const start = () => {
    if (active.value) return;
    active.value = true;
    // 立即执行一次
    void task();
    timer = window.setInterval(() => {
      void task();
    }, interval);
  };

  const stop = () => {
    active.value = false;
    if (timer !== null) {
      clearInterval(timer);
      timer = null;
    }
  };

  onBeforeUnmount(stop);

  return { active, start, stop };
}

